跳至主要内容

Dotfiles Management

跨平台 dotfiles 配置,支援 macOS 和 Linux,提供統一的開發環境管理。

快速開始

# 1. Clone 專案
git clone <repo-url> ~/.files

# 2. 執行初始化
cd ~/.files && ./init.sh

# 3. 安裝開發環境
./bin/setup-devenv.sh

# 4. 重啟 shell
source ~/.zshrc

核心特色

  • 🌍 跨平台支援 - 自動檢測 macOS/Linux 並載入對應配置
  • 🔧 智能環境管理 - 專案自動切換 Java/Node.js/Go 版本
  • 效能最佳化 - Zinit Turbo 模式,Shell 啟動速度提升 50%+
  • 🛡️ 安全設計 - 敏感資料獨立管理,不進版控
  • 📦 模組化架構 - 功能分離,易於維護和擴展
  • 🚀 一鍵安裝 - 自動化安裝和配置 70+ 開發工具
  • 🔒 防污染設計 - 最小化 .zshrc,避免其他工具污染配置

專案結構

dotfiles/
├── bin/ # 可執行工具腳本
├── config/ # 配置檔案
│ ├── versions.sh # 軟體版本統一管理
│ └── secret.sh # 敏感資料 (不進版控)
├── zsh/ # Shell 配置
│ ├── zinit.zshrc # Zinit 插件管理 (Turbo 模式最佳化)
│ ├── common.zshrc # 通用 zsh 配置
│ └── kywk.zshrc # 基礎 zsh 設定
├── mac/ # macOS 專用配置
│ └── Brewfile # 套件管理 (70+ 開發工具)
└── 核心配置檔案 (gitconfig, gitmessage, kywk.shrc)

同步機制

Dropbox 同步

使用 Dropbox 同步配置檔案,搭配 Symbolic Link:

# 配置檔案位置
~/Dropbox/config/dotfiles/

# 自動建立 symbolic links
~/.zshrc -> ~/.files/zsh/kywk.zshrc
~/.gitconfig -> ~/.files/gitconfig
~/.tmux.conf -> ~/.files/tmux.conf

開源客戶端 Maestral

取代官方 Dropbox Desktop:

brew install maestral

版本管理

支援的開發環境

語言/工具版本管理預設版本自動檢測檔案
JavaSDKMAN21.0.5-zulupom.xml, build.gradle
Node.jsVolta/NVM20package.json, .nvmrc
Go系統安裝1.21.5go.mod

版本配置統一管理

# config/versions.sh
export JAVA_VERSION="21.0.5-zulu"
export NODE_VERSION="20"
export GO_VERSION="1.21.5"

實用工具腳本

系統維護

./bin/setup-devenv.sh    # 一鍵安裝開發環境
./bin/health-check.sh # 環境健康檢查
./bin/update.sh # 更新所有工具
./bin/backup.sh # 配置備份

開發輔助

./bin/gen-gitignore.sh   # 智能生成 .gitignore
./config/versions.sh # 軟體版本統一管理

Shell 環境

Zinit + Powerlevel10k

  • Turbo 模式最佳化 - 啟動速度提升 50%+
  • 最小化 .zshrc - 避免其他工具污染配置
  • 自動檢測專案 - 根據檔案類型切換版本

參考:Zinit

自訂配置

本機設定

# ~/.config/local.sh
export KYWK_HOME="/custom/path"
export CUSTOM_VAR="value"

敏感資料

# config/secret.sh (不進版控)
export API_KEY="your-key"
export DATABASE_URL="your-db-url"

故障排除

常用命令

# 重載配置
source ~/.zshrc

# 除錯模式
LOG_LEVEL=debug source bin/load-env.sh

# 重新初始化
./bin/backup.sh && ./init.sh

健康檢查

# 檢查環境狀態
./bin/health-check.sh

# 檢查版本管理
which java node go
java -version
node --version
go version

See Also

相關工具

替代方案

  • chezmoi - 另一個 dotfiles 管理工具
  • GNU Stow - 符號連結管理工具
  • yadm - Yet Another Dotfiles Manager